QuickSight 管理者として過不足のない IAM 権限はどうなるか調査・検討した
コーヒーが好きな emi です。
QuickSight はアカウント有効化時に認証方法でデフォルトの「IAM フェデレーティッド ID と QuickSight で管理されたユーザーを使用する」を選択している場合、以下二種類のユーザーを作成することができます。
- IAM ユーザー(や IAM ロール、IAM Identity Center ユーザー等)に紐づいた QuickSight ユーザー
- QuickSight 独自のユーザー
ユーザーの作方法は以下ブログもご参照ください。
QuickSight 管理者が QuickSight 関連の操作をする際は、QuickSight 自体へのアクセス以外にも、S3 や Athena など他の AWS リソースとの接続や、VPC Connection を作成するための IAM ロール選択など、様々な権限が必要とされるシーンがあります。
一部コンソール画面から操作できず、AWS CLI などの API 操作を行わなければならないこともあるため、個人的には CloudShell の操作権限も欲しいところです。
▼ QuickSight 管理コンソールから様々な AWS リソースへのアクセス権限を設定する画面
では QuickSight の管理者にはどのような IAM 権限が必要なのか、どこまでの権限が必要なのか、必要十分な権限セットはどうなるのかを調査・検討してみました。
最初に所感
- IAM コンソール管理用の QuickSight IAM ID ベースのポリシー を参考にカスタマー管理ポリシーを作成し付与すればある程度網羅された最低限の権限となる
- 個人的には上記権限に「AWSCloudShellFullAccess」を追加してやるのが良いと思う
- 上記権限で QuickSight に関するすべての操作ができるわけではないので、都度必要に応じて権限を追加する運用をするのが現実的
1. 「IAM コンソール管理用の QuickSight IAM ID ベースのポリシー」を利用した検証
1-1. IAM ポリシーの作成
以下 AWS 公式ドキュメントに、QuickSight を操作するユーザー向けの IAM 権限の例がいくつか掲載されています。用途に応じてこの中から選択すると良さそうです。
今回は QuickSight の管理者に必要な権限を付与したいです。
IAM コンソール管理用の QuickSight IAM ID ベースのポリシー というものを使ってみます。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": [
"quicksight:*",
"iam:AttachRolePolicy",
"iam:DetachRolePolicy",
"iam:ListAttachedRolePolicies",
"iam:GetPolicy",
"iam:CreatePolicyVersion",
"iam:DeletePolicyVersion",
"iam:GetPolicyVersion",
"iam:ListPolicyVersions",
"iam:DeleteRole",
"iam:CreateRole",
"iam:GetRole",
"iam:ListRoles",
"iam:CreatePolicy",
"iam:ListEntitiesForPolicy",
"iam:listPolicies",
"s3:ListAllMyBuckets",
"athena:ListDataCatalogs",
"athena:GetDataCatalog"
],
"Resource": [
"*"
]
}
]
}
こちらの json を見たところ、以下の権限が許可されるようです。
- QuickSight に関するすべての権限
- QuickSight 関連で必要になる IAM 権限
- S3 バケット一覧の権限
- 一部の Athena へのアクセス権限
この json を使い、まずはカスタマー管理ポリシーを作成します。
「QuickSight-FullAccess-IAM」という名前を付けて保存しました。
こんな感じです。
1-2. IAM ユーザーの作成
QuickSight 管理者に紐づける IAM ユーザー「test-user」を作成します。マネジメントコンソールへのアクセスを許可します。
先ほど作成した「QuickSight-FullAccess-IAM」を付与します。
IAM ユーザーを作成したら、CSV ファイルをダウンロードしてパスワード等を保管します。
1-3. QuickSight ユーザーの自己プロビジョニング
作成した IAM ユーザーでログインしました。QuickSight と一部の AWS リソースへの権限しかないので、コストなどは見えないようになっています。
QuickSight コンソールに移動し、QuickSight ユーザーを自己プロビジョニングします。
メールアドレスを入力し「続行」をクリックします。
QuickSight コンソールにログインできました。最新情報は「閉じる」をクリックし閉じます。
1-4. QuickSight コンソールでの操作確認
右上のアイコンから「QuickSight を管理」をクリックして管理画面に遷移します。
ユーザーの管理画面になります。作成した IAM ユーザーで自己プロビジョニングした QuickSight ユーザーが管理者権限で存在するのがわかります。
「セキュリティとアクセス許可」から、別のサービスへのアクセス権限が操作できるか確認します。
S3 バケットの一覧は確認できますね。想定通りです。
Secrets Manager からシークレットへのアクセスはできませんでした。RDS や Redshift などにアクセスする際 Secrets Manager を使っている場合は別途 IAM ユーザー側に権限を追加する必要があります。
ちなみに作成したユーザー自身で IAM コンソールからに IAM ポリシーを変更することはできました。
▼ IAM ダッシュボードでは権限がない部分でエラーになっているが、
▼ 自身の IAM ユーザーに付与されている IAM ポリシーを変更して
▼ Secrets Manager のシークレットが見えるようになった
では、既存の権限を外すことはできるのでしょうか?RDS のチェックを外してみます。
保存すると、無事 RDS への権限が外せました。なるほど。
続いて「VPC 接続の管理」で VPC Connection を作ろうとしてみます。
VPC への権限がないので、VPC 一覧は見えません。
実行ロールは見えました。
1-4-1. CoudShell へのアクセス検証
ついでに CloudShell へのアクセスについても試します。
QuickSight の操作の一部はコンソールではできず、AWS CLI などを利用した API での操作が必要な場合があります。QuickSight グループの削除 や 制限付き共有フォルダ の作成・編集などが該当します。
API 操作のために AWS CLI が手軽に使える CloudShell へのアクセス権限があると便利なのですが、今回設定した「IAM コンソール管理用の QuickSight IAM ID ベースのポリシー」だと CloudShell への権限が許可されていないので利用できません。
IAM ユーザーに、AWS 管理ポリシーの「AWSCloudShellFullAccess」を付与します。
利用できるようになりました。
試しに list-data-sets コマンドでデータセット一覧を表示してみると、うまく動作しました。
2. QuickSight に対するフルアクセスのみだとどうなるのか
AWS 管理の IAM ポリシーに、QuickSightFullAccess というものはありません。
無いので、カスタマー管理ポリシーで作成してみます。「QuicksightFullAccess」という名前を付けました。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": [
"quicksight:*"
],
"Resource": [
"*"
]
}
]
}
作成した「QuickSightFullAccess」ポリシーを別の IAM ユーザーを作成して付与します。
「QuickSightFullAccess」ポリシーを付与した「test-user2」でマネジメントコンソールにログインしました。
QuickSight ユーザーを自己プロビジョニングします。
QuickSight コンソールにログインしました。管理画面に遷移します。
自身の QuickSight ユーザーが管理者ロールとして作成されているのが確認できます。
「セキュリティとアクセス許可」から各サービスへのアクセス権限を管理する画面に遷移しようとすると、
エラーとなりました。
「以下を参照してください」の後のリンクは以下のドキュメントへのリンクでした。
VPC 接続の管理画面では、実行ロールも見えませんでした。IAM へのアクセス権限が無いので、そうですよね。
終わりに
QuickSight の管理者にはどのような IAM 権限があった方がいいか検証しつつ考えてみました。
私の所感としては以下です。
- IAM コンソール管理用の QuickSight IAM ID ベースのポリシー を参考にカスタマー管理ポリシーを作成し付与すればある程度網羅された最低限の権限となる
- 個人的には上記権限に「AWSCloudShellFullAccess」を追加してやるのが良いと思う
- 上記権限で QuickSight に関するすべての操作ができるわけではないので、都度必要に応じて権限を追加する運用をするのが現実的
質問やご要望については画面下部のお問い合わせ「DevelopersIO について」からご連絡ください。記事に関してお問い合わせいただけます。
参考